/* 
泛型约束: 指定泛型有什么样的结构
给泛型指定一个父接口 ===> 这样泛型就拥有了父接口中的属性和方法
*/
(() => {

  interface AA {
    length: number
  }

  // 泛型是一种特别的接口
  function getLength<T extends AA>(value: T): number {
    return value.length
  }

  console.log(getLength('abc'))
  // console.log(getLength(123)) // error  number没有length
})()